1.CNN
1.1 原理
Tips:
1.每个卷积层由K个卷积模板生成,例如:第一层一般为边缘检测的卷积模板。
2.为了使卷积前后的数据维度一致,可以将原始数据进行边拓展,拓展的数量为P。
1.2.CNN流程
Tips:
1.每个卷积层后会有Relu操作,起将矩阵稀疏化的作用。
2.若干个卷积层后会有POOL操作,其实就是降采样,一般取采样区域中的最大值为采样结果。
3.最后是FC(full connected)layers(第三章所讲的神经网络),对数据进行分类识别,计算样本在各分类下的分值,最后使用softmax激活函数。
2. Training Neural Networks 1
2.1 Activation Functions
Tips:
Sigmoid激活函数的导数大于0,如果输入数据全是正或全是负,那么dL/dw符号始终不变,这意味着w的更新方向均相同,这必然对寻找合适的w参数不利,这也是为什么一般要求数据关于0对称的原因,也解释了问题2。
Tips:
当输入x小于0时,Relu的输出为0,导数也为0,这使得所在的神经元权重w始终得不到更新,因此称此神经元为dead ReLU。
ReLU的改进:
总结与建议:
2.2 Date Preprocessing
Tips:
Whitening的目的是去掉数据之间的相关联度,是很多算法进行预处理的步骤。比如说当训练图片数据时,由于图片中相邻像素值有一定的关联,所以很多信息是冗余的。这时候去相关的操作就可以采用白化操作。数据的whitening必须满足两个条件:一是不同特征间相关性最小,接近0;二是所有特征的方差相等(不一定为1)。常见的白化操作有PCA whitening和ZCA whitening。
PCA whitening是指将数据x经过PCA降维为z后,可以看出z中每一维是独立的,满足whitening白化的第一个条件,这是只需要将z中的每一维都除以标准差就得到了每一维的方差为1,也就是说方差相等。公式为:
ZCA whitening是指数据x先经过PCA变换为z,但是并不降维,因为这里是把所有的成分都选进去了。这是也同样满足whtienning的第一个条件,特征间相互独立。然后同样进行方差为1的操作,最后将得到的矩阵左乘一个特征向量矩阵U即可。
ZCA whitening公式为:
2.3 Weight Initialiation
当参数w初始化为0时:
很多神经元的输出可能趋于一致,梯度值也一致,因此w的更新也一致,这并不是我们希望看到的!
当参数初始化为一个小数:
图片依次为:
每层网络的输出均值,输出方差,输出数据直方图
当初始化为1附近的值时:
目前比较理想的初始化算法:
Tips:
1. fan_in与fan_out指的是输入与输出的数据的数量。
2.以上神经网络采用的激活函数为tanh,当采用ReLU时,初始化公式应变为:
因为一般数据是关于0中心化,而ReLU对小于0的数据设为0,所以要除以2!
2.4 Bath Normalization
Tips:
在训练阶段,β与γ是需要进行训练的参数,而μ与σ是根据训练数据计算得到,两者值不一样!
2.5 Baby Setting the Learning Process
2.6 Hyperparameter Optimzation
**
**
Tips:
learning rate与regularization系数以log形式搜索,而不是直接按值搜索,这是因为它们更新权重时是乘数!
Tips:
这是因为所选的参数搜索范围太小!
3. Training Neural Networks 2
3.1 Fancier optimization
初始的SGD算法容易出现锯齿状反复计算的情况,收敛太慢,容易收敛到局部极小值和鞍点(高维出现几率比局部极小值更加频繁),抗噪声能力差!
Momentum,即动量,可以理解为保留之前的梯度方向和强度作为此次迭代更新的依据!因此,可以有效的避免锯齿状反复计算的情况!
Nesterov动量法,相比于动量法,可以矫正 之前的梯度对当前参数更新的影响!
RMSprop相对于AdaGrad而言,减少了之前梯度对当前参数更新的影响!
Adam,融合了 RMSprop和动量法!
在神经网络的超参数中,学习率最为重要,其次为学习衰减率,因为训练阶段越到后面搜索步长理应越小!右图中的拐点及学习率衰减时出现的情况。